Ir al contenido

Texturas por procedimientos

De Wikipedia, la enciclopedia libre

Una textura por procedimiento es una imagen generada por computadora creada usando un algoritmo para crear una superficie realista o representación volumétrica de elementos naturales tales como madera, mármol, granito, metal, piedra y otros, para uso en el mapeado de textura.

Por lo general, el aspecto natural del resultado obtenido se logra mediante el uso de ruido fractal y funciones de turbulencia. Estas funciones se utilizan como una representación numérica de la "aleatoriedad" que se encuentra en la naturaleza.

Una textura de rejilla de suelo generada por procedimientos

Texturizado sólido

[editar]

El texturizado sólido es un proceso en el que la función de generación de textura se evalúa sobre en cada punto visible de la superficie del modelo. Tradicionalmente estas funciones utilizan ruido Simplex o ruido Perlin como su función de la base, pero algunas funciones simples pueden utilizar métodos más triviales tales como la suma de funciones sinusoidales por ejemplo. Las texturas sólidas son una alternativa a las imágenes de textura 2D tradicionales que se aplican a las superficies de un modelo. Es una tarea difícil y tediosa obtener múltiples texturas 2D para formar una apariencia visual consistente en un modelo sin que parezca obviamente un mosaico. Se crearon texturas sólidas para resolver específicamente este problema.

En lugar de editar imágenes para adaptarlas a un modelo, se utiliza una función para evaluar el color del punto que se está texturizando. Los puntos se evalúan en función de su posición 3D, no de su posición superficial 2D. En consecuencia, las texturas sólidas no se ven afectadas por las distorsiones del espacio de parámetros de superficie, como se puede ver cerca de los polos de una esfera. Además, la continuidad entre la parametrización de superficie de parches adyacentes tampoco es una preocupación. Las texturas sólidas se mantendrán constantes y tendrán características de tamaño constante independientemente de las distorsiones en los sistemas de coordenadas superficiales.[1]

Textura celular

[editar]

La texturización celular difiere de la mayoría de otras técnicas de generación de textura de procedimiento, ya que no depende de las funciones de ruido como base, aunque a menudo se utiliza para complementar la técnica. Las texturas celulares se basan en puntos característicos que están dispersos sobre un espacio tridimensional. A continuación, estos puntos se utilizan para dividir el espacio en pequeñas regiones aleatorias llamadas células. Estas células a menudo se parecen a "escalas de lagarto", "guijarros" o "losas". Aunque estas regiones son discretas, la función de la base celular es continua y puede evaluarse en cualquier parte del espacio.[2]

Texturas Genéticas

[editar]

La generación de texturas genéticas es un enfoque altamente experimental para generar texturas. Es un proceso altamente automatizado que utiliza un humano para moderar completamente el resultado final. El flujo de control usualmente tiene un ordenador generando un conjunto de textura candidatas. A partir de éstos, un usuario selecciona una selección. A continuación, el equipo genera otro conjunto de texturas mediante la modificación y el cruce de elementos de las texturas seleccionadas por el usuario.[3]​ Para obtener más información sobre cómo se consigue exactamente este método de mutación y generación cruzada, consulte Algoritmo genético. El proceso continúa hasta que se genera una textura adecuada para el usuario. Este no es un método comúnmente utilizado de generar texturas ya que es muy difícil controlar y dirigir el resultado final. Debido a esto, se utiliza típicamente para la experimentación o para la generación de texturas abstractas solamente.

Texturas auto-organizadas

[editar]

A partir de un simple ruido blanco, los procesos de auto-organización conducen a patrones estructurados - aún con una parte de aleatoriedad. Los sistemas de reacción-difusión son un buen ejemplo para generar este tipo de texturas.

Ejemplo de una textura de mármol generada por procedimientos

[editar]

(Tomado de The Renderman Companion Book, de Steve Upstill)

/*  Pixar 1988. Todos los derechos reservados */
 /* Tomado de RenderMan Companion p. 355 */
 /* Listado 16.19  Shader de superficie de mármol azul*/

 /*
  * blue_marble(): una textura de piedra de mármol en tonos de superficie azul
  */

 blue_marble(
          float   Ks    = .4,
                  Kd    = .6,
                  Ka    = .1,
                  roughness = .1,
                  txtscale = 1;
          color   specularcolor = 1)
 {
    point PP;            /* punto escalado en el espacio de sombreado */
    float csp;           /* parámetro spline de color */
    point Nf;            /* normal hacia adelante */
    point V;             /* para specular() */
    float pixelsize, twice, scale, weight, turbulence;

    /* Obtiene una normal hacia adelante para calcular la iluminación. */
    Nf = faceforward( normalize(N), I);
    V = normalize(-I);

    /*
     * Calcular "turbulencia" a la [PERLIN85]. La turbulencia es una suma de
     * componentes de "ruido" con un espectro de potencia "fractal" 1 / f. Da la
     * impresión visual del flujo de fluido turbulento (por ejemplo, como en la
     * formación del mármol azul de splines de color fundido!). Utilice el área del
     * elemento de superficie en el espacio de textura para controlar el número de componentes de
     * de modo que el contenido de frecuencia sea apropiado para la escala.
     * Esto evita el aliasing de la textura.
     */
    PP = transform("shader", P) * txtscale;
    pixelsize = sqrt(area(PP));
    twice = 2 * pixelsize;
    turbulence = 0;
    for (scale = 1; scale > twice; scale /= 2)
        turbulence += scale * noise(PP/scale);

    /* Desvanecimiento gradual de la componente de mayor frecuencia cercana al límite */
    if (scale > pixelsize) {
        weight = (scale / pixelsize) - 1;
        weight = clamp(weight, 0, 1);
        turbulence += weight * scale * noise(PP/scale);
    }

    /*
     * Ampliar la parte superior del rango de turbulencias a 0,75: 1
     * para llenar el rango 0: 1 y usarlo como el parámetro de
     * una spline de color a través de varios tonos de azul.
     */
    csp = clamp(4 * turbulence - 3, 0, 1);
    Ci = color spline(csp,
    color (0.25, 0.25, 0.35),      /* azul pálido        */
        color (0.25, 0.25, 0.35),  /* azul pálido        */
        color (0.20, 0.20, 0.30),  /* azul medio     */
        color (0.20, 0.20, 0.30),  /* azul medio      */
        color (0.20, 0.20, 0.30),  /* azul medio      */
        color (0.25, 0.25, 0.35),  /* azul pálido        */
        color (0.25, 0.25, 0.35),  /* azul pálido        */
        color (0.15, 0.15, 0.26),  /* azul oscuro medio  */
        color (0.15, 0.15, 0.26),  /* azul oscuro medio */
        color (0.10, 0.10, 0.20),  /* azul oscuro        */
        color (0.10, 0.10, 0.20),  /* azul oscuro        */
        color (0.25, 0.25, 0.35),  /* azul pálido       */
        color (0.10, 0.10, 0.20)   /* azul oscuro        */
        );

    /* Multiplique este color por la luz reflejada difusamente. */
    Ci *= Ka*ambient() + Kd*diffuse(Nf);

    /* Ajuste la opacidad. */
    Oi = Os;
    Ci = Ci * Oi;

    /* Añadir en reflejos especulares. */
    Ci += specularcolor * Ks * specular(Nf,V,roughness);
 }

Este artículo fue tomado de The Photoshop Roadmap con autorización por escrito

Véase también

[editar]

Referencias

[editar]
  1. Ebert et al: Texturing and Modeling A Procedural Approach, page 10. Morgan Kaufmann, 2003.
  2. Ebert et al: Texturing and Modeling A Procedural Approach, page 135. Morgan Kaufmann, 2003.
  3. Ebert et al: Texturing and Modeling A Procedural Approach, page 547. Morgan Kaufmann, 2003.

Algunos programas para crear texturas usando generación por procedimientos

[editar]